#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include "log.h"
/*
    给定一个整数数组，要求对数组进行从小到大的排序。
    输入： [5, 2, 9, 1, 5, 6]
    输出： [1, 2, 5, 5, 6, 9]
    你可以选择 冒泡排序、插入排序、快速排序或内置排序函数来实现。
*/
static int number_arry_sort(){
    int arry[6] = {5,2,9,1,5,6};
    int i = 0;
    int j = 0;
    int size = sizeof(arry)/sizeof(arry[0]);
    for(i=0;i<size-1;i++){
        for(j=0;j<size-1-i;j++){
            if(arry[j]>arry[j+1]){
                int temp = arry[j];
                arry[j] = arry[j+1];
                arry[j+1] = temp;
            }
        }
    }
    for(i=0;i<size;i++){
        printf("%d,",arry[i]);
    }
    printf("\n");
    return 0;
}


/*
    给定一个字符串，按字母顺序对字符串中的字母进行排序（忽略大小写）。
    输入： "cba"
    输出： "abc"

    输入： "sortingExample"
    输出： "aeegilmnoprstx"
*/
static int string_arry_sort(){
    char arry[32] = {0};
    printf("input string\n");
    scanf("%s",arry);
    //采用冒泡
    int i = 0;
    int j = 0;
    int size = strlen(arry);
    for(i=0;i<size-1;i++){
        for(j=0;j<size-1-i;j++){
            if(arry[j]>arry[j+1]){
                char temp = arry[j];
                arry[j] = arry[j+1];
                arry[j+1] = temp;
            }
        }
    }
    printf("%s\n",arry);
}

/*
    给定一个字符串，重组使得相邻字符不相同，若无法重组则返回空字符串。
    输入： "aaabbc"
    输出： "ababac"

    输入： "aaa"
    输出： ""
*/
static int word_arry_contain(char *word_arry,int size,char word){
    int i = 0;
    for(i=0;i<size;i++){
        if(word_arry[i] == word){
            return 0;
        }   
    }
    return -1;
}

static int string_rebulid(){
    char arry[32] = {0};
    char word[32] = {0};//用于存放字符串中不同的字符的数组
    char temp[32] = {0};
    printf("input string\n");
    scanf("%s",arry);
    int size = strlen(arry);
    int i = 0;
    int j = 0;
    int word_cnt = 0;
    strcpy(temp,arry);
    //提取独立的字符
    for(i=0;i<size;i++){
        for(j=0;j<=word_cnt;j++){
            if (arry[i] != word[j])
            {
                if(word_arry_contain(word,word_cnt,arry[i])==0){
                    break;
                }
                word[word_cnt++] = arry[i];
                break;
            }
        }
    }
    //重组字符数组
    for(i=0;i<size-1;i++){
        if(arry[i] == arry[i+1]){
            for(j=0;j<word_cnt;j++){
                if(arry[i+1]!=word[j]){
                    arry[i+1] = word[j];
                    break;
                }
            }
        }
    }
    if(strcmp(temp,arry)==0){
        memset(arry,0,sizeof(arry));
    }
    printf("%s\n",arry);
    return 0;
}

int main(){
    number_arry_sort();
    //string_arry_sort();
    string_rebulid();
    return 0;
}